/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import entities.Clientes;
import entities.CuotasACobrar;
import entities.VentasCabecera;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author edgar
 */
@ManagedBean(name = "cobrarCuotas")
@SessionScoped
public class CobrarCuotasController {

    private Clientes cliente;
    private Integer saldoInt;
    private List<ListaCuotasClientes> listaCuotasClientes;
    @PersistenceContext
    EntityManager em;

    /**
     * @return the listaClientes
     */
    public List<Clientes> getListaClientes() {
        Query q = em.createNamedQuery("Clientes.findAll", Clientes.class);
        List<Clientes> lista = new ArrayList(q.getResultList());
        return lista;
    }
    private CuotasACobrar cuotaACobrar;
    private VentasCabecera vc;
    @PostConstruct
    public void init(){
        cliente=new Clientes();
    }

    public void buscarCuotas() {
    //    if (cliente != null) {
            List<VentasCabecera> listaFacturas = cliente.getVentasCabeceraList();
            for (int i = 0; i < listaFacturas.size(); i++) {
                //Query q = em.createQuery("SELECT c FROM CuotasACobrar c WHERE c.cuotasACobrarPK.nroFactura = :nroFactura" + listaFacturas.get(i).getNroFactura());
                Query q = em.createNamedQuery("CuotasACobrar.findByNroFactura", CuotasACobrar.class);
                q.setParameter("nroFactura", listaFacturas.get(i).getNroFactura());
                List<CuotasACobrar> listaCuotas = q.getResultList();
                this.listaCuotasClientes = new ArrayList();
                for (int j = 0; j < listaCuotas.size(); j++) {
                    if (listaCuotas.get(j).getCodEstado().getCodEstado() == 1) {
                        //cargo la lista que se va a mostrar en el datatable
                        ListaCuotasClientes a = new ListaCuotasClientes();
                        a.setCliente(cliente);
                        a.setCuotasACobrar(listaCuotas.get(j));
                        this.setCuotaACobrar(listaCuotas.get(j));
                        this.setVc(listaFacturas.get(i));
                        this.listaCuotasClientes.add(a);
                        //this.setSaldoInt((Integer) this.getSaldoInt() + listaCuotas.get(j).getMonto());
                    }
                }
      //      }
//        Query q =em.createNamedQuery(, null)
        }
    }

    public void pagoCuota() {

        new PagosController().pagar(this.cuotaACobrar, new Date(), this.vc,em);

    }

    public Clientes getCliente() {
        return cliente;
    }

    public void setCliente(Clientes cliente) {
        this.cliente = cliente;
    }

    /**
     * @return the listaCuotasClientes
     */
    public List<ListaCuotasClientes> getListaCuotasClientes() {
        return listaCuotasClientes;
    }

    /**
     * @param listaCuotasClientes the listaCuotasClientes to set
     */
    public void setListaCuotasClientes(List<ListaCuotasClientes> listaCuotasClientes) {
        this.listaCuotasClientes = listaCuotasClientes;
    }

    /**
     * @return the saldo
     */
    public String getSaldo() {
        return "Saldo de cliente: " + getSaldoInt();
    }

    /**
     * @return the saldoInt
     */
    public Integer getSaldoInt() {
        return saldoInt;
    }

    /**
     * @param saldoInt the saldoInt to set
     */
    public void setSaldoInt(Integer saldoInt) {
        this.saldoInt = saldoInt;
    }

    /**
     * @return the cuotaACobrar
     */
    public CuotasACobrar getCuotaACobrar() {
        return cuotaACobrar;
    }

    /**
     * @param cuotaACobrar the cuotaACobrar to set
     */
    public void setCuotaACobrar(CuotasACobrar cuotaACobrar) {
        this.cuotaACobrar = cuotaACobrar;
    }

    /**
     * @return the vc
     */
    public VentasCabecera getVc() {
        return vc;
    }

    /**
     * @param vc the vc to set
     */
    public void setVc(VentasCabecera vc) {
        this.vc = vc;
    }
    /**
     * @param saldo the saldo to set
     */
}
